summaryrefslogtreecommitdiff
path: root/src/number.h
blob: 14896230c5175d06b68d4008e5fc980f313a27c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#ifndef NUMBER_H
#define NUMBER_H

#include <bu/string.h>
#include "packedintarray.h"

class Number
{
public:
    Number( int iOrd=0 );
    Number( const Bu::String &sData, int iOrd=0 );
    virtual ~Number();

    Number &operator=( const Bu::String &sNum );
    Number operator+( const Number &rhs ) const;
    Number operator-( const Number &rhs ) const;
    Number operator*( const Number &rhs ) const;

    void set( const Bu::String &sNum );

    operator Bu::String() const
    {
        return aInt.toString();
    }

    Bu::String toString() const;

    int digit( int iOrder ) const;

private:
    Number add( const Number &rhs, bool bSub ) const;

private:
    int iOrd;
    bool bPositive;
    PackedIntArray aInt;
};

#endif